package baidu

type AccessToken struct {
	ExpiresIn     int64  `json:"expires_in"`    // access_token的有效期，单位：秒
	RefreshToken  string `json:"refresh_token"` // 用于刷新access_token, 有效期为10年
	AccessToken   string `json:"access_token"`  // 获取到的授权token，作为调用其他接口访问用户数据的凭证
	SessionSecret string `json:"session_secret"`
	SessionKey    string `json:"session_key"`
	Scope         string `json:"scope"` // access_token最终的访问权限，即用户的实际授权列表
}

type UserInfo struct {
	BaiduName   string `json:"baidu_name"`   // 百度账号
	NetdiskName string `json:"netdisk_name"` // 网盘账号
	AvatarUrl   string `json:"avatar_url"`   // 头像地址
	VipType     int    `json:"vip_type"`     // 会员类型，0普通用户、1普通会员、2超级会员
	UkId        int64  `json:"uk"`           // 用户ID
}

type PanVolume struct {
	Total  int64 `json:"total"`  // 总空间大小，单位B
	Expire bool  `json:"expire"` // 7天内是否有容量到期
	Used   int64 `json:"used"`   // 已使用大小，单位B
	Free   int64 `json:"free"`   // 剩余大小，单位B
}

// 文件列表
type FileList struct {
	HasMore   int8       `json:"has_more"`   // 是否还有下一页
	RequestId string     `json:"request_id"` // 请求id
	Errno     int64      `json:"errno"`      // 错误码
	GuidInfo  string     `json:"guid_info"`
	List      []FileInfo `json:"list"`
}

// 网盘文件信息结构
type FileInfo struct {
	Category    int8   `json:"category"`
	FsId        uint64 `json:"fs_id"`
	IsDir       int8   `json:"is_dir"`
	LocalCtime  int64  `json:"local_ctime"`
	LocalMtime  int64  `json:"local_mtime"`
	ServerCtime int64  `json:"server_ctime"`
	ServerMtime int64  `json:"server_mtime"`
	Privacy     int8   `json:"privacy"`
	Md5         string `json:"md_5"`
	Size        int64  `json:"size"`
	Thumbs      string `json:"thumbs"`
}

type CreateResData struct {
	ErrorCode int64  `json:"error_code"`
	ErrorMsg  string `json:"error_msg"`
	Errno     int64  `json:"errno"`    // 错误码
	FSId      uint64 `json:"fs_id"`    // 文件在云端的唯一标识ID
	Md5       string `json:"md5"`      // 文件的MD5，只有提交文件时才返回，提交目录时没有该值
	Name      string `json:"name"`     // 文件名
	Category  int    `json:"category"` // 分类类型, 1 视频 2 音频 3 图片 4 文档 5 应用 6 其他 7 种子
	Path      string `json:"path"`     // 上传后使用的文件绝对路径
	Size      int64  `json:"size"`     // 文件大小，单位B
	Ctime     int64  `json:"ctime"`    // 文件创建时间
	Mtime     int64  `json:"mtime"`    // 文件修改时间
	IsDir     int    `json:"isdir"`    // 是否目录，0 文件、1 目录
}

type CreateFolderParam struct {
	Path  string `json:"path"`  // 上传后使用的文件绝对路径
	Size  string `json:"size"`  // 文件或目录的大小，必须要和文件真实大小保持一致
	IsDir int64  `json:"isdir"` // 是否目录，0 文件、1 目录
}

type UploadFileConfig struct {
	Id           uint64 `json:"id"`            // 百度盘用户id
	Path         string `json:"path"`          // 上传根目录地址
	PreCreateUrl string `json:"precreate_url"` // 预上传地址
	UploadUrl    string `json:"upload_url"`    // 分片上传地址
	CreateUrl    string `json:"create_url"`    // 创建文件地址
}

type NewAccessToken struct {
	ExpiresIn        int64  `json:"expires_in"`    // access_token的有效期，单位：秒
	RefreshToken     string `json:"refresh_token"` // 用于刷新access_token, 有效期为10年
	AccessToken      string `json:"access_token"`  // 获取到的授权token，作为调用其他接口访问用户数据的凭证
	Scope            string `json:"scope"`         // access_token最终的访问权限，即用户的实际授权列表
	Error            string `json:"error"`
	ErrorDescription string `json:"error_description"`
}

type FileDownLoadData struct {
	Category    int64  `json:"category"`     // 文件类型
	Dlink       string `json:"dlink"`        // 文件下载地址
	FileName    string `json:"file_name"`    // 文件名
	IsDir       int64  `json:"isdir"`        // 是否是目录
	ServerCtime int64  `json:"server_ctime"` // 文件的服务器创建时间
	ServerMtime int64  `json:"server_mtime"` // 文件的服务修改时间
	Size        int64  `json:"size"`         // 文件大小
}

type FileDownLoadRes struct {
	Errmsg string `json:"errmsg"` // 错误信息
	Errno  int64  `json:"errno"`  // 错误码
	List   []FileDownLoadData
}

type FileManageRes struct {
	Errno int64 `json:"errno"`
	Info  []struct {
		Errno int64  `json:"errno"`
		Path  string `json:"path"`
	}
	RequestId uint64 `json:"request_id"`
	TaskId    uint64 `json:"task_id"`
}
type FileManageRenameFileListItem struct {
	Path    string `json:"path"`
	Newname string `json:"newname"`
}

// FileMetaResp 查询文件信息
type FileMetaResp struct {
	Errno     int64          `json:"errno"`
	Errmsg    string         `json:"errmsg"`
	Names     interface{}    `json:"names"`
	RequestId string         `json:"request_id"`
	List      []FileMetaItem `json:"list"`
}

type FileMetaItem struct {
	Category    int    `json:"category"`
	DateTaken   int64  `json:"date_taken"`
	Dlink       string `json:"dlink"`
	Filename    string `json:"filename"`
	FsId        uint64 `json:"fs_id"`
	Height      int16  `json:"height"`
	Isdir       int    `json:"isdir"`
	Md5         string `json:"md_5"`
	OperId      int64  `json:"oper_id"`
	Path        string `json:"path"`
	ServerCtime int64  `json:"server_ctime"`
	ServerMtime int64  `json:"server_mtime"`
	Size        int64  `json:"size"`
	Thumbs      struct {
		Icon string `json:"icon"`
		Url1 string `json:"url_1"`
		Url2 string `json:"url_2"`
		Url3 string `json:"url_3"`
	} `json:"thumbs"`
	Width int64 `json:"width"`
}
